﻿using System;
using System.Linq;
using System.Text;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using System.ComponentModel;
using DevExpress.ExpressApp.DC;
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using System.Collections.Generic;
using DevExpress.ExpressApp.Model;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation;

namespace RX2_Office.Module.BusinessObjects.BusinessLogic
{
    [NavigationItem("Sales")]
    [DefaultClassOptions]
    [ImageName("Salesrepgroup.ico")]
    [DefaultProperty("GroupDescription")]
    //[DefaultListViewOptions(MasterDetailMode.ListViewOnly, false, NewItemRowPosition.None)]
    //[Persistent("DatabaseTableName")]
    // Specify more UI options using a declarative approach (https://documentation.devexpress.com/#eXpressAppFramework/CustomDocument112701).
    public class SalesRepGrouping : XPObject
    { // Inherit from a different class to provide a custom primary key, concurrency and deletion behavior, etc. (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument113146.aspx).
        public SalesRepGrouping(Session session)
            : base(session)
        {
        }
        public override void AfterConstruction()
        {
            base.AfterConstruction();

            this.SalesRep = Session.GetObjectByKey<SalesRep>(SecuritySystem.CurrentUserName);
                //Session.GetObjectByKey<SalesRep>(SecuritySystem.CurrentUserId);

             
            // Place your initialization code here (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112834.aspx).
        }
        //private string _PersistentProperty;
        [XafDisplayName("Sales Rep Groups"), ToolTip("My hint message")]
        //[ModelDefault("EditMask", "(000)-00"), Index(0), VisibleInListView(false)]
        //[Persistent("DatabaseColumnName"), RuleRequiredField(DefaultContexts.Save)]
        //public string PersistentProperty {
        //    get { return _PersistentProperty; }
        //    set { SetPropertyValue("PersistentProperty", ref _PersistentProperty, value); }
        //}

        //[Action(Caption = "My UI Action", ConfirmationMessage = "Are you sure?", ImageName = "Attention", AutoCommit = true)]
        //public void ActionMethod() {
        //    // Trigger a custom business logic for the current record in the UI (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112619.aspx).
        //    this.PersistentProperty = "Paid";
        //}


        // Fields...
        private SalesRep _SalesRep;
        private string _GroupDescription;


         [Indexed]
        [Size(64)]
        public string GroupDescription
        {
            get
            {
                return _GroupDescription;
            }
            set
            {
                SetPropertyValue("GroupDescription", ref _GroupDescription, value);
            }
        }

        
        [Association("SalesRep-SalesRepGroupings")]
        public SalesRep SalesRep
        {
        	get
        	{
        		return _SalesRep;
        	}
        	set
        	{
        	  SetPropertyValue("SalesRep", ref _SalesRep, value);
        	}
        }

    }
}